#ifndef _MICROGEN_POLYHEDRON_H_

#define _MICROGEN_POLYHEDRON_H_


class Polyhedron;

class Polyhedron {
	private:
		bool hasPoints;
		bool hasHalfspace;
		bool hasFacets;

	public:
		/*
		 * 
		 * Nf:			number of faces,
		 * Nf_vx[i]:	number of vertices in face i
		 * fc[i][j]:	j-th index in face i
		 * Nvx:			number of vertices of the polyhedron
		 * vx[i][j]:	Coordinates of point i
		 * n[i][]:		normal of facet [i]
		 * dist[i]:		d[i]
		 * 
		 */
		Polyhedron();
		Polyhedron( const int N_vx, double ** X, const bool init=true );
		Polyhedron( const int Nf, double ** N, double * d , const bool init=true);

		int		Nf, *Nf_vx, **fc, Nvx;
		double	**n, **vx, *dist;
		/* *********************************************************************** */
		/* *********************************************************************** */

		void	XYZDiameter( double xyz_diam[] );
		double	MaxDiameter( double * n_max );
		double	MinDiameter( double * n_min );


		void	getDataFromPoints();
		void	getDataFromHalfspaces();
		
};



#endif /* _MICROGEN_POLYHEDRON_H_ */

